Skip to content

Daily Pre-release

Daily Pre-release #171

name: Daily Pre-release
permissions: {}
on:
schedule:
- cron: '0 0 * * 1-5' # Runs Mon-Fri at midnight UTC
workflow_dispatch: # Allows manual trigger if needed
jobs:
create-pre-release:
permissions:
contents: write
id-token: write
runs-on: ubuntu-latest
environment: build
env:
GAR_IMAGE_BASE: ${{ vars.GAR_REPO }}/blurts-server
GAR_REGISTRY: us-docker.pkg.dev
DOCKERHUB_IMAGE: mozilla/blurts-server # Define Docker Hub image name
steps:
- name: Checkout main branch
uses: actions/checkout@v4
with:
ref: main
persist-credentials: false
- name: Get current date
run: |
echo "CURRENT_DATE=$(date +%Y.%m.%d)" >> $GITHUB_ENV
echo "tag_name: $(date +%Y.%m.%d)"
- name: Create Pre-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl -X POST \
-H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/${{ github.repository }}/releases \
-d '{
"tag_name": "${{ env.CURRENT_DATE }}",
"target_commitish": "main",
"name": "${{ env.CURRENT_DATE }}",
"body": "Daily pre-release for ${{ env.CURRENT_DATE }}.",
"prerelease": true,
"draft": false,
"generate_release_notes": true
}'
# We cannot rely on the release_retag.yaml workflow because of the
# auth scope of the default github token. It's a good security practice
# to prevent a github action being triggered by another.
# So we will deliberately push to dockerhub below
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Authenticate to Google Cloud
id: gcp-auth
uses: google-github-actions/auth@v2
with:
token_format: access_token
workload_identity_provider: ${{ vars.GCPV2_GITHUB_WORKLOAD_IDENTITY_PROVIDER }}
service_account: ${{ vars.GCP_GAR_SERVICE_ACCOUNT }}
- name: Login to Artifact Registry
id: gar-login
uses: docker/login-action@v3
with:
registry: ${{ env.GAR_REGISTRY }}
username: oauth2accesstoken
password: ${{ steps.gcp-auth.outputs.access_token }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.DOCKERHUB_IMAGE }}
tags: type=sha,format=short,prefix=
- name: Pull Docker image from GAR with commit tag
run: docker pull ${{ env.GAR_IMAGE_BASE }}:${{ steps.meta.outputs.version }}
- name: Tag Docker image for Docker Hub with release tag
run: docker tag ${{ env.GAR_IMAGE_BASE }}:${{ steps.meta.outputs.version }} ${{ env.DOCKERHUB_IMAGE }}:${{ env.CURRENT_DATE }}
- name: Push Docker image to Docker Hub with release tag
run: docker push ${{ env.DOCKERHUB_IMAGE }}:${{ env.CURRENT_DATE }}
- name: Tag Docker image for GAR with release tag
run: docker tag ${{ env.GAR_IMAGE_BASE }}:${{ steps.meta.outputs.version }} ${{ env.GAR_IMAGE_BASE }}:${{ env.CURRENT_DATE }}
- name: Push Docker image to GAR with release tag
run: docker push ${{ env.GAR_IMAGE_BASE }}:${{ env.CURRENT_DATE }}